[Search][Getting Started] Chat first view#270500
Conversation
mdefazio
left a comment
There was a problem hiding this comment.
I'd like to push back on transitioning to the full chat view on focus. I'm fine if this happens on submit in the chat input, but it's jarring initially.
And if the LLM is not setup/connected, then it gets messy.
Curious what this means for this PR. So happy to discuss.
|
LGTM |
pgayvallet
left a comment
There was a problem hiding this comment.
Change from agent builder code (x-pack/platform/plugins/shared/agent_builder/public/index.ts) lgtm
Initial implementation of a chat first getting started experience for search solutions. This view is currently feature flagged.
- Fix duplicate i18n key on Elasticsearch endpoint aria label - Fix useSpaceId initializing with empty string, now returns string | undefined - Rename isAnimatingToFull to isConversationOverlayOpen for clarity - Add showConversation flag to keep EmbeddableConversation mounted during closing animation - Replace EuiPageTemplate.Section per-section layout with single centered section - Replace custom CSS grid with EuiFlexGrid and shared ChatColumnsGrid style - Extract ChatStretchedFlexItem and ChatColumnsGrid to styles.ts - Convert all template literal styles to object syntax in styles.ts - Move CONVERSATION_ANIMATION_MS constant to styles.ts alongside related CSS - Add responsive breakpoint to ChatContentSeparator and ChatStretchedFlexItem - Fix role="group" placement on EuiBadgeGroup instead of EuiFlexItem - Fix UrlView.elasticsearch enum value from 'es' to 'elasticsearch' - Drop unnecessary modalPrompt state in GettingStartedAgentPrompt - Wrap sidebar items in EuiFlexItem in GettingStartedChatContent Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds component tests for ChatElasticsearchConnectionDetails, GettingStartedAgentPrompt, and ConversationPrompt, and extracts a useGettingStartedLoaded hook shared by both page components so the on-mount analytics/sessionStorage behaviour can be tested directly without mocking the full component tree. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tarted Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
796dcbf to
878562b
Compare
Updated to navigate to Agent builder with the message entered into the prompt.
Currently this is serverless only, so you should always have an LLM, but when we enabled this for hosted and self-managed you are correct. But I think we would handle that by gate this view to only showing when you have agent builder and an llm configured. |
| const openConversation = useCallback(() => { | ||
| if (initialMessage.trim().length === 0) return; | ||
| application.navigateToApp(AGENT_BUILDER_APP_ID, { | ||
| path: `/agents/${agentBuilderDefaultAgentId}/conversations/new`, | ||
| state: { | ||
| initialMessage, | ||
| entryPointSource: 'search_getting_started', | ||
| }, | ||
| }); | ||
| }, [application, initialMessage]); |
There was a problem hiding this comment.
@pgayvallet per @mdefazio request this was updated to open agent builder instead of using the overlay.
Is this the best way to handle starting a new conversation with an initialMessage? it works but feels wrong to provide the path, I debated on if I should introduce a new conversation locator instead that handled the path in agent builder.
9a6e117 to
9782844
Compare
💛 Build succeeded, but was flaky
Failed CI StepsTest Failures
Metrics [docs]Module Count
Async chunks
Page load bundle
History
|
mdefazio
left a comment
There was a problem hiding this comment.
Thanks for updating the flow. Works better now IMO.
…d_evals3 * commit '1ef44f1257e5c3ded611f8aae026652427db72ee': (129 commits) [ResponseOps] Surface task_manager.runSoon 409 conflicts to callers (elastic#268508) [V2 Rules] Discover Composer — field population fixes and general styling updates (elastic#270466) [Search][Getting Started] Chat first view (elastic#270500) [Fleet] Add package policy conditions UI support (elastic#270315) feat(action_policies): Create simple actions from rule form (elastic#271319) [CI] Skip archive upload when tsc fails (elastic#271467) [Fleet] Add collector groups (elastic#270619) [Discover][Metrics] Reorganize metric grid card actions (elastic#267302) Update z-index and height properties in useMenuHeaderStyle hook (elastic#271325) chore(deps): bump `shell-quote` from `1.8.3` to `1.8.4` (elastic#271534) [Security] Mirror elasticsearch-controller role changes to Kibana roles.yml (elastic#271321) upgrade @ai-sdk/provider-utils to 3.0.25 (elastic#270773) [docs] Update SO validate troubleshooting section for new PR comment format (elastic#270927) Use uuid matchers in search MV13 rollback fixtures (elastic#271196) [Security Solution] AT skill `get_endpoint_artifacts` tool (elastic#270607) [Console] Enable auto-merge in console_definitons (elastic#270941) [Alerting v2] Flag rule ESQL query errors as user errors (elastic#270643) [Metrics][Discover] Refactor METRICS_INFO error handling (elastic#270627) [Cases][Templates] Improvements to templates yaml editor (elastic#269076) [i18n] Update kibana.yml with non-deprecated setting (elastic#270781) ...
## Summary Implementing a chat first approach for the search solution getting started page. Note: this page is only visible when the feature flag is enabled, which it is currently off for everyone. ### Screenshots <img width="1465" height="810" alt="image" src="https://github.com/user-attachments/assets/5d4d872d-6f9d-4bdf-85e9-b3661b5a4b67" /> <img width="1465" height="810" alt="image" src="https://github.com/user-attachments/assets/41af62c0-f95a-4bbd-bbe5-0dd7fe76023f" /> <img width="1465" height="810" alt="image" src="https://github.com/user-attachments/assets/b7722ab3-6b1f-478c-beb7-4e2966f3a2bb" /> ### Testing 1. Run Kibana with serverless elasticsearch & eis enabled 2. Enabled the feature flag in kibana.dev.yaml: ```yaml feature_flags.overrides: searchSolution.gettingStartedChatEnabled: true ``` ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] ~If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~ - [ ] ~This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations.~ - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] ~The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)~ - [ ] ~Review the [backport guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing) and apply applicable `backport:*` labels.~ --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Summary
Implementing a chat first approach for the search solution getting started page.
Note: this page is only visible when the feature flag is enabled, which it is currently off for everyone.
Screenshots
Testing
Checklist
Check the PR satisfies following conditions.
Reviewers should verify this PR satisfies this list as well.
If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker listThis was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. Therelease_note:breakinglabel should be applied in these situations.The PR description includes the appropriate Release Notes section, and the correctrelease_note:*label is applied per the guidelinesReview the backport guidelines and apply applicablebackport:*labels.